package com.lg.customrxjava;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import com.lg.customrxjava.custombean.Human;
import com.lg.customrxjava.custombean.PracticeTeacher;
import com.lg.customrxjava.custombean.Student;
import com.lg.customrxjava.custombean.Teacher;

import java.util.List;

public class MainActivity<T> extends Activity {
    String TAG = "lg";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("onCreate ", "onClick_cusCreate");

    }

    public void onClick_cusCreate(View view) {
//        Observable.create(new ObservableOnSubscribe<Integer>() {
//                @Override
//                public void subscribe(ObservableEmitter<Integer> observableEmitter) {
//                    Log.i(TAG, "宇航员倒数结束进行点火升空，subscribe: 开始发射");
//                    observableEmitter.onNext(123);
//                    observableEmitter.onComplete();
//                }
//
//
//            }).subscribe(new Observer<Integer>() {
//                @Override
//                public void onSubscribe(Disposable db) {
//                    Log.i(TAG, "宇航员进入火箭进行倒数，OnSubscribe: 订阅成功即将开始发送");
//
//                }
//
//                @Override
//                public void onNext(Integer item) {
//                    Log.i(TAG, "宇航员的火箭分离，onNext: 进行接收 ");
//                }
//
//                @Override
//                public void onError(Throwable e) {
//                    Log.d(TAG, "onError: ");
//                }
//
//                @Override
//                public void onComplete() {
//                    Log.i(TAG, "宇航员进入太空轨道，onComplete: 接收事件完成 ");
//                }
//            });

//        Observable.just("abc").subscribe(new Observer<String>() {
//            @Override
//            public void onSubscribe(Disposable db) {
//                Log.i(TAG, "onSubscribe ");
//
//            }
//
//            @Override
//            public void onNext(String item) {
//                Log.i(TAG, "onNext "+item);
//
//            }
//
//            @Override
//            public void onError(Throwable e) {
//                Log.i(TAG, "onError ");
//
//            }
//
//            @Override
//            public void onComplete() {
//                Log.i(TAG, "onComplete ");
//
//            }
//        });


//        Observable.just("abc","123123").subscribe(new Observer<String>() {
//            @Override
//            public void onSubscribe(Disposable db) {
//                Log.i(TAG, "onSubscribe");
//
//            }
//
//            @Override
//            public void onNext(String item) {
//                     Log.i(TAG, "onNext "+item);
//
//            }
//
//            @Override
//            public void onError(Throwable e) {
//
//            }
//
//            @Override
//            public void onComplete() {
//                Log.i(TAG, "onComplete");
//
//            }
//        });

//
//        Observable.create(new ObservableOnSubscribe<String>() {
//                            @Override
//                public void subscribe(Observer<String> observableEmitter) {
//                    Log.i(TAG, "宇航员倒数结束进行点火升空，subscribe: 开始发射");
//                    observableEmitter.onNext("123123213");
//                    observableEmitter.onComplete();
//                }
//
//
//            }).map(new Function<String, Integer>() {
//            @Override
//            public Integer apply(String s) throws Throwable {
//                Log.i(TAG, "apply");
//                int a = s.length();
//                Object object= new Object() ;
//                return a;
//            }
//        }).map(new Function<Integer, String>() {
//
//            @Override
//            public String apply(Integer integer) throws Throwable {
//                Log.i(TAG, "apply 2 ="+integer);
//
//                return " I am seconde apply";
//            }
//        }).map(new Function<String, Integer>() {
//
//            @Override
//            public Integer apply(String s) throws Throwable {
//                Log.i(TAG, "apply 3 = "+s);
//                int a = s.length();
//                Object object=new Object();
//                return (Integer) object;
//            }
//        }).subscribe(new Observer<Integer>() {
//            @Override
//            public void onSubscribe() {
//                Log.i(TAG, "onSubscribe");
//
//            }
//
//            @Override
//            public void onNext(Integer item) {
//                Log.i(TAG, "onNext "+item);
//
//            }
//
//            @Override
//            public void onError(Throwable e) {
//
//            }
//
//            @Override
//            public void onComplete() {
//                Log.i(TAG, "onComplete");
//
//            }
//        });



          Observable.create(new ObservableOnSubscribe<Human>() {
                @Override
                public void subscribe(Observer<Human> observableEmitter) {
                    Log.i(TAG, "宇航员倒数结束进行点火升空，subscribe: 开始发射");
                    Human h=new Human();

                    observableEmitter.onNext(h);
                    observableEmitter.onComplete();
                }


            }).map(new Function<Human, Teacher>(){
              @Override
              public Teacher apply(Human human) throws Throwable {
                    String a = "1231";

                  human.getNumber();
                  human.setNumber(123);
                  Teacher h = null;
                  int b=0;
                  h.setTeacherNumber(b);
                  h.setTeacherNumber(b);

                 //   h.getName();
                  PracticeTeacher pt = new PracticeTeacher();

                  return pt;
              }
          }).subscribe(new Observer<Teacher>() {
                @Override
                public void onSubscribe( ) {
                    Log.i(TAG, "宇航员进入火箭进行倒数，OnSubscribe: 订阅成功即将开始发送");

                }

                @Override
                public void onNext(Teacher item) {
                    Log.i(TAG, "宇航员的火箭分离，onNext: 进行接收 ");
                }

                @Override
                public void onError(Throwable e) {
                    Log.d(TAG, "onError: ");
                }

                @Override
                public void onComplete() {
                    Log.i(TAG, "宇航员进入太空轨道，onComplete: 接收事件完成 ");
                }
            });
    }

    //泛型
    void test(T t){
//        int a = 1;
//        String b = (String) a;

       // String b = (String) ;

    }
}
